home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 4
/
Apprentice-Release4.iso
/
Source Code
/
Libraries
/
MacTCP Library 1.1
/
Socks Test ƒ
/
main.c
next >
Wrap
C/C++ Source or Header
|
1995-12-05
|
3KB
|
126 lines
#include <stdio.h>
#include <stdlib.h>
#include <MyTCPIncludes.h>
#include <AddressXLation.h>
#include <Socks.h>
#include <HighLevelDNS.h>
#define mySocksDaemon "tcpgate2"
#define mySocksPort 1080
int main(){
OSErr err;
short tcpV;
SOCKSiopb pb;
IPAddr mango;
char buf[16*1024];
char buff[50]="Test String";
char name[10]="dnebing\0";
IPAddr sock;
printf("Socks Test\n");
err=OpenMacTCP(&tcpV,false);
printf("Open returns %d\n",err);
err=OpenResolver((StringPtr)0);
printf("OpenResolver returns %d\n",err);
if (err!=noErr)
return 0;
DNSLookup(mySocksDaemon,&(pb.csParam.open.socksHost));
pb.csParam.open.socksPort=mySocksPort;
sock.a.addr=pb.csParam.open.socksHost;
pb.csParam.open.socksUser=name;
printf("Socks host: %u.%u.%u.%u\n",sock.a.byte[0],sock.a.byte[1]
,sock.a.byte[2],sock.a.byte[3]);
DNSLookup("mango.epix.net",&(mango.a.addr));
printf("Remote host: %u.%u.%u.%u\n",mango.a.byte[0],mango.a.byte[1]
,mango.a.byte[2],mango.a.byte[3]);
err=CloseResolver();
printf("CloseResolver returns %d\n",err);
pb.ioCRefNum=tcpV;
pb.csParam.create.rcvBuff=buf;
pb.csParam.create.rcvBuffLen=16*1024;
pb.csParam.create.notifyProc=(TCPNotifyUPP)0;
// create a socks (TCP) stream
err=SOCKS_Create(&pb,false);
printf("Create returns %d\n",err);
pb.ioCRefNum=tcpV;
pb.csParam.open.ulpTimeoutValue=0;
pb.csParam.open.ulpTimeoutAction=0;
pb.csParam.open.tosFlags=0;
pb.csParam.open.remoteHost=mango.a.addr;
pb.csParam.open.remotePort=7;// echo port
pb.csParam.open.validityFlags=0;
pb.csParam.open.tosFlags=0;
pb.csParam.open.precedence=0;
pb.csParam.open.dontFrag=true;
pb.csParam.open.timeToLive=0;
pb.csParam.open.security=0;
pb.csParam.open.optionCnt=0;
err=SOCKS_ActiveOpen(&pb,false);
printf("Socks returns %d\n",err);
if (err==noErr){
wdsEntry en[2];
char retBuf[100];
long bufLen;
pb.ioCRefNum=tcpV;
printf(" Have a connection through the socks daemon\n");
pb.csParam.send.ulpTimeoutValue=pb.csParam.send.ulpTimeoutAction=
pb.csParam.send.validityFlags=0;
pb.csParam.send.pushFlag=2;
pb.csParam.send.urgentFlag=0;
en[0].ptr=(Ptr)buff;
en[0].length=StrLen(buff);
en[1].ptr=(Ptr)0;
en[1].length=0;
pb.csParam.send.wdsPtr=(Ptr)en;
err=SOCKS_Send(&pb,false);
printf(" Send returns %d\n",err);
pb.ioCRefNum=tcpV;
pb.csParam.receive.commandTimeoutValue=0;
pb.csParam.receive.rcvBuff=retBuf;
pb.csParam.receive.rcvBuffLen=100;
err=SOCKS_Rcv(&pb,false);
printf(" Rcv returns %d, len %d\n",err,pb.csParam.receive.rcvBuffLen);
retBuf[pb.csParam.receive.rcvBuffLen]=0;
printf(" Received [%s]\n",retBuf);
}
pb.ioCRefNum=tcpV;
pb.csParam.close.ulpTimeoutValue=0;
pb.csParam.close.ulpTimeoutAction=0;
pb.csParam.close.validityFlags=0;
err=SOCKS_Close(&pb,false);
printf("Close returns %d\n",err);
pb.ioCRefNum=tcpV;
err=SOCKS_Release(&pb,false);
printf("Release returns %d\n",err);
return 0;
}